package com.myacg.core.move;

import com.myacg.core.entity.Point;

/**
 * 移动插件接口
 * 解除与计时器类(运算引擎)的耦合性，只用将插件组合到MoveEngine中就可以进行运行计算
 * @author Administrator
 *
 */
public interface MovePlugin {
	/**
	 * //获取移动的总长
	 * @return
	 */
	double getMoveLength(); 
	/**
	 *  //设置力度
	 * @param F
	 */
	void setF(double F); 
	/**
	 * //获取当前力
	 * @return
	 */
	double getF(); 
	/**
	 * 获取当前速度
	 * @return
	 */
	double getV();
	double getV0();
	/**
	 * //获取当前方向(力的方向)
	 * @return
	 */
	double getDirection(); 
	/**
	 * //获取当前点位
	 * @return
	 */
	Point getPoint(); 
	/**
	 * //设置方向
	 * @param direction
	 */
	void setDirection(double direction);  
	void setV0(double V0);  
	/**
	 * //每帧执行的位移运算
	 */
	void runToMove(); 
	
	/**
	 * 判断是否发生方向的改变
	 */
    boolean isChangeDir();
    
    /**
     * 重设状态
     */
    void resetState();
    /**
     * 设置起点
     */
    void setStartPoint(Point point);
}
